# -*- coding: utf-8 -*-
"""
#-------------------------------------------------------------------------------
# Nom:         appel_processing
#
# Auteur:      Alain Gauthier
#
# Créé le:     04/11/2014
# Copyright:   (c) eaucéa 2014
# Licence:     GNU Public Licence (GPL)

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

Fonctions à utiliser avec QGIS 2.2 - vérifier le comportement de "processing" avant de procéder
pour une autre version de QGIS

Fonctions encapsulant l'appel aux algorithmes du plugin "processing"

Ces fonctions remplacent appels générés automatiquement par le plugin "processing" afin
d'éviter les verrous posés lors de l'utilisation des paramètres raster.
En effet l'utilisation de "parameterRaster" génère un verrou posé sur l'ouverture des fichiers et
cela pose des problèmes lors de traitements inclus dans des boucles.

Ce script doit être lancé depuis l'interface du plugin 'Morph'Eau' sous QGIS

#-------------------------------------------------------------------------------
"""
# modules QGIS / GDAL
import processing
import processing.algs
import processing.algs.gdal
from processing.algs.gdal.GdalUtils import GdalUtils

#------------------------------------------------------------------------------#

def reproj_gdal_warp(ainput,aproj_src,aproj_dst,amethode,aoutput):
    """
    lancement du calcul de reprojection d'une couche raster avec gdalwarp
    décomposant les étapes de "processing" qui pose problème dans la version QGIS 2.2
    paramètres :
        ainput,    fichier d'entrée
        aproj_src, projection du fichier d'entrée
        aproj_dst, projection du fichier de sortie utilisée pour le calcul
        amethode,  indice de la méthode d'estimation
        aoutput    fichier de sortie
    """
    METHOD_OPTIONS = ['near', 'bilinear', 'cubic', 'cubicspline', 'lanczos']
    arguments = []
    arguments.append('-s_srs')
    arguments.append(aproj_src)
    arguments.append('-t_srs')
    arguments.append(aproj_dst)
    arguments.append('-r')
    arguments.append(METHOD_OPTIONS[amethode])
    arguments.append('-of')
    arguments.append('GTiff')
    arguments.append(ainput)
    arguments.append(aoutput)

    GdalUtils.runGdal(['gdalwarp',
                      GdalUtils.escapeAndJoin(arguments)],None)

#------------------------------------------------------------------------------#

def raffine_gdal_translate (ainput,apourcent,alimites,aoutput):
    """
    lancement du calcul de raffinement de maillage avec gdal_translate en
    décomposant les étapes de "processing" qui pose problème dans la version QGIS 2.2
    paramètres :
        ainput,    fichier d'entrée
        apourcent, % de la taille d'entrée en sortie
        alimites,   extension du raster en sortie
        aoutput    fichier de sortie
    """
    arguments = []
    arguments.append('-of')
    arguments.append('GTiff')
    arguments.append('-outsize')
    arguments.append(str(apourcent) + '%')
    arguments.append(str(apourcent) + '%')
    arguments.append('-a_nodata')
    arguments.append('none')
    regionCoords = alimites.split(',')
    arguments.append('-projwin')
    arguments.append(regionCoords[0])
    arguments.append(regionCoords[3])
    arguments.append(regionCoords[1])
    arguments.append(regionCoords[2])
    arguments.append(ainput)
    arguments.append(aoutput)
    GdalUtils.runGdal(['gdal_translate',
                      GdalUtils.escapeAndJoin(arguments)], None)

#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#

if __name__ == '__main__':
    raise EnvironmentError("module devant être exécuté sous console/extension python QGIS")
